iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Mobile Development

轉職App開發打怪雜記系列 第 11

Dictionary 使用array創建與字典取值

  • 分享至 

  • xImage
  •  

緣由:

在職訓時老師講解語法,講到Dictionary(字典)時,有一種老師說的我都懂,看起來沒什麼問題,但好像又不是真的懂
其實作為現職的app工程師到現在也還是會遇到腦筋打結的時候,資料類型沒啥問題但常常問題在於到底有幾層中括號,每次遇到這個我都要想超久,沒什麼特別有效率的方法就不寫下來了,假如有大神有很棒的方法請教教我,本篇單就取出字典內的值與字典的相關使用來介紹。
這次遇到的問題是需要將兩筆不一樣的陣列資料拼在一起後,然後再比對顯示資料,腦內風暴了一下後,查找了字典的各種用法,剛好有合用的,所以記錄下來

解決方法:

以下就用我舉的範例來說明這次要紀錄的方法,numberItems陣列為學生號碼陣列,scores陣列為學生成績陣列,要從這兩個陣列中得出平均和不及格的學生座號與成績

創建座號陣列

let numberItems = Array(1..<6).map{ "座號\($0)"}

學生成績陣列

let scores = [84,73,55,87,96]

用陣列創建[座號,成績]字典:

let scoreDic = Dictionary(uniqueKeysWithValues: zip(numberItems, scores))

創建平均變數

var average = 0.0

遍歷[座號,成績]字典

for (number,score) in scoreDic {
    if score <= 60 {
        print("\(number)成績不及格,這次成績為\(score)")
    }
    else {
        if score >= 90 {
            print("\(number)非常優秀,這次成績為\(score)")
        }
        else {
            print("\(number)成績及格,這次成績為\(score)")
        }
    }
    average = average + Double(score)
}
average = average/Double(scoreDic.count)
print("平均等於 :\(average)")

上一篇
防止自動鎖屏
下一篇
限制輸入框語言
系列文
轉職App開發打怪雜記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Marvin
iT邦新手 2 級 ‧ 2021-09-11 22:28:29

可以用 typealias 讓 dict 有他的意義

// 先定義學生的 id vs. score 是一個 key value 型態
typealias StudentIDAndScoreDict = [Int: Int]
// 把這個 id vs. score 裝進 Array 裡面,就會看起來像這樣
var studentScoreList = [StudentIDAndScoreDict]()

另一種,就是設計學生的資料結構

// 設計學生的資料結構,如果他應該有 let name: String,那就加進去
struct Student {
    
    let id: Int
    let score: Int
}

// 那裝學生的 array ,就會這樣
var studentListV2 = [Student]()

我要留言

立即登入留言